package tp4.dsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import tp4.dsl.services.PdmGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalPdmParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Profesor:'", "'dedicacion:'", "'SIMPLE'", "'SEMI'", "'EXCLUSIVO'", "'Materia:'", "'dias:'", "'cargaHoraria:'", "'requiere:'", "','", "'Aula:'", "'capacidad: '", "' alumnos '", "'tiene:'", "'Requerimiento:'", "' a '", "' en '", "'LUNES'", "'MARTES'", "'MIERCOLES'", "'JUEVES'", "'VIERNES'", "'SABADO'", "'materia:'", "'dictadaPor: '", "'inscriptos:'", "'Planificacion a\\u00F1o: '", "'semestre:'", "'{'", "'materiasADictar'", "'}'", "'horarios {'", "'asignaciones {'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_STRING=6;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalPdmParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalPdmParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalPdmParser.tokenNames; }
    public String getGrammarFileName() { return "../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g"; }



     	private PdmGrammarAccess grammarAccess;
     	
        public InternalPdmParser(TokenStream input, PdmGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected PdmGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:76:1: ruleModel returns [EObject current=null] : ( ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )* ( (lv_profesoresACargar_1_0= ruleProfesor ) )* ( (lv_materiasACargar_2_0= ruleMateria ) )* ( (lv_aulasACargar_3_0= ruleAula ) )* ( (lv_planificacion_4_0= rulePlanificacion ) ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_requerimientosACargar_0_0 = null;

        EObject lv_profesoresACargar_1_0 = null;

        EObject lv_materiasACargar_2_0 = null;

        EObject lv_aulasACargar_3_0 = null;

        EObject lv_planificacion_4_0 = null;


         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:79:28: ( ( ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )* ( (lv_profesoresACargar_1_0= ruleProfesor ) )* ( (lv_materiasACargar_2_0= ruleMateria ) )* ( (lv_aulasACargar_3_0= ruleAula ) )* ( (lv_planificacion_4_0= rulePlanificacion ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:80:1: ( ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )* ( (lv_profesoresACargar_1_0= ruleProfesor ) )* ( (lv_materiasACargar_2_0= ruleMateria ) )* ( (lv_aulasACargar_3_0= ruleAula ) )* ( (lv_planificacion_4_0= rulePlanificacion ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:80:1: ( ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )* ( (lv_profesoresACargar_1_0= ruleProfesor ) )* ( (lv_materiasACargar_2_0= ruleMateria ) )* ( (lv_aulasACargar_3_0= ruleAula ) )* ( (lv_planificacion_4_0= rulePlanificacion ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:80:2: ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )* ( (lv_profesoresACargar_1_0= ruleProfesor ) )* ( (lv_materiasACargar_2_0= ruleMateria ) )* ( (lv_aulasACargar_3_0= ruleAula ) )* ( (lv_planificacion_4_0= rulePlanificacion ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:80:2: ( (lv_requerimientosACargar_0_0= ruleRequerimiento ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==25) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:81:1: (lv_requerimientosACargar_0_0= ruleRequerimiento )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:81:1: (lv_requerimientosACargar_0_0= ruleRequerimiento )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:82:3: lv_requerimientosACargar_0_0= ruleRequerimiento
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getRequerimientosACargarRequerimientoParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRequerimiento_in_ruleModel131);
            	    lv_requerimientosACargar_0_0=ruleRequerimiento();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"requerimientosACargar",
            	            		lv_requerimientosACargar_0_0, 
            	            		"Requerimiento");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:98:3: ( (lv_profesoresACargar_1_0= ruleProfesor ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==11) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:99:1: (lv_profesoresACargar_1_0= ruleProfesor )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:99:1: (lv_profesoresACargar_1_0= ruleProfesor )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:100:3: lv_profesoresACargar_1_0= ruleProfesor
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getProfesoresACargarProfesorParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleProfesor_in_ruleModel153);
            	    lv_profesoresACargar_1_0=ruleProfesor();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"profesoresACargar",
            	            		lv_profesoresACargar_1_0, 
            	            		"Profesor");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:116:3: ( (lv_materiasACargar_2_0= ruleMateria ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==16) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:117:1: (lv_materiasACargar_2_0= ruleMateria )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:117:1: (lv_materiasACargar_2_0= ruleMateria )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:118:3: lv_materiasACargar_2_0= ruleMateria
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getMateriasACargarMateriaParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleMateria_in_ruleModel175);
            	    lv_materiasACargar_2_0=ruleMateria();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"materiasACargar",
            	            		lv_materiasACargar_2_0, 
            	            		"Materia");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:134:3: ( (lv_aulasACargar_3_0= ruleAula ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==21) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:135:1: (lv_aulasACargar_3_0= ruleAula )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:135:1: (lv_aulasACargar_3_0= ruleAula )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:136:3: lv_aulasACargar_3_0= ruleAula
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getAulasACargarAulaParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAula_in_ruleModel197);
            	    lv_aulasACargar_3_0=ruleAula();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"aulasACargar",
            	            		lv_aulasACargar_3_0, 
            	            		"Aula");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:152:3: ( (lv_planificacion_4_0= rulePlanificacion ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:153:1: (lv_planificacion_4_0= rulePlanificacion )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:153:1: (lv_planificacion_4_0= rulePlanificacion )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:154:3: lv_planificacion_4_0= rulePlanificacion
            {
             
            	        newCompositeNode(grammarAccess.getModelAccess().getPlanificacionPlanificacionParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_rulePlanificacion_in_ruleModel219);
            lv_planificacion_4_0=rulePlanificacion();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getModelRule());
            	        }
                   		set(
                   			current, 
                   			"planificacion",
                    		lv_planificacion_4_0, 
                    		"Planificacion");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleProfesor"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:178:1: entryRuleProfesor returns [EObject current=null] : iv_ruleProfesor= ruleProfesor EOF ;
    public final EObject entryRuleProfesor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProfesor = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:179:2: (iv_ruleProfesor= ruleProfesor EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:180:2: iv_ruleProfesor= ruleProfesor EOF
            {
             newCompositeNode(grammarAccess.getProfesorRule()); 
            pushFollow(FOLLOW_ruleProfesor_in_entryRuleProfesor255);
            iv_ruleProfesor=ruleProfesor();

            state._fsp--;

             current =iv_ruleProfesor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProfesor265); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProfesor"


    // $ANTLR start "ruleProfesor"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:187:1: ruleProfesor returns [EObject current=null] : (otherlv_0= 'Profesor:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dedicacion:' ( (lv_dedicacion_3_0= ruleDedicacion ) ) ) ;
    public final EObject ruleProfesor() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        EObject lv_dedicacion_3_0 = null;


         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:190:28: ( (otherlv_0= 'Profesor:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dedicacion:' ( (lv_dedicacion_3_0= ruleDedicacion ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:191:1: (otherlv_0= 'Profesor:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dedicacion:' ( (lv_dedicacion_3_0= ruleDedicacion ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:191:1: (otherlv_0= 'Profesor:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dedicacion:' ( (lv_dedicacion_3_0= ruleDedicacion ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:191:3: otherlv_0= 'Profesor:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dedicacion:' ( (lv_dedicacion_3_0= ruleDedicacion ) )
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleProfesor302); 

                	newLeafNode(otherlv_0, grammarAccess.getProfesorAccess().getProfesorKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:195:1: ( (lv_name_1_0= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:196:1: (lv_name_1_0= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:196:1: (lv_name_1_0= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:197:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleProfesor319); 

            			newLeafNode(lv_name_1_0, grammarAccess.getProfesorAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProfesorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleProfesor336); 

                	newLeafNode(otherlv_2, grammarAccess.getProfesorAccess().getDedicacionKeyword_2());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:217:1: ( (lv_dedicacion_3_0= ruleDedicacion ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:218:1: (lv_dedicacion_3_0= ruleDedicacion )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:218:1: (lv_dedicacion_3_0= ruleDedicacion )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:219:3: lv_dedicacion_3_0= ruleDedicacion
            {
             
            	        newCompositeNode(grammarAccess.getProfesorAccess().getDedicacionDedicacionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleDedicacion_in_ruleProfesor357);
            lv_dedicacion_3_0=ruleDedicacion();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProfesorRule());
            	        }
                   		set(
                   			current, 
                   			"dedicacion",
                    		lv_dedicacion_3_0, 
                    		"Dedicacion");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProfesor"


    // $ANTLR start "entryRuleDedicacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:243:1: entryRuleDedicacion returns [EObject current=null] : iv_ruleDedicacion= ruleDedicacion EOF ;
    public final EObject entryRuleDedicacion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDedicacion = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:244:2: (iv_ruleDedicacion= ruleDedicacion EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:245:2: iv_ruleDedicacion= ruleDedicacion EOF
            {
             newCompositeNode(grammarAccess.getDedicacionRule()); 
            pushFollow(FOLLOW_ruleDedicacion_in_entryRuleDedicacion393);
            iv_ruleDedicacion=ruleDedicacion();

            state._fsp--;

             current =iv_ruleDedicacion; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDedicacion403); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDedicacion"


    // $ANTLR start "ruleDedicacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:252:1: ruleDedicacion returns [EObject current=null] : (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusivo_2= ruleExclusivo ) ;
    public final EObject ruleDedicacion() throws RecognitionException {
        EObject current = null;

        EObject this_Simple_0 = null;

        EObject this_Semi_1 = null;

        EObject this_Exclusivo_2 = null;


         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:255:28: ( (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusivo_2= ruleExclusivo ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:256:1: (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusivo_2= ruleExclusivo )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:256:1: (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusivo_2= ruleExclusivo )
            int alt5=3;
            switch ( input.LA(1) ) {
            case 13:
                {
                alt5=1;
                }
                break;
            case 14:
                {
                alt5=2;
                }
                break;
            case 15:
                {
                alt5=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:257:5: this_Simple_0= ruleSimple
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getSimpleParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSimple_in_ruleDedicacion450);
                    this_Simple_0=ruleSimple();

                    state._fsp--;

                     
                            current = this_Simple_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:267:5: this_Semi_1= ruleSemi
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getSemiParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleSemi_in_ruleDedicacion477);
                    this_Semi_1=ruleSemi();

                    state._fsp--;

                     
                            current = this_Semi_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:277:5: this_Exclusivo_2= ruleExclusivo
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getExclusivoParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleExclusivo_in_ruleDedicacion504);
                    this_Exclusivo_2=ruleExclusivo();

                    state._fsp--;

                     
                            current = this_Exclusivo_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDedicacion"


    // $ANTLR start "entryRuleSimple"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:293:1: entryRuleSimple returns [EObject current=null] : iv_ruleSimple= ruleSimple EOF ;
    public final EObject entryRuleSimple() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimple = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:294:2: (iv_ruleSimple= ruleSimple EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:295:2: iv_ruleSimple= ruleSimple EOF
            {
             newCompositeNode(grammarAccess.getSimpleRule()); 
            pushFollow(FOLLOW_ruleSimple_in_entryRuleSimple539);
            iv_ruleSimple=ruleSimple();

            state._fsp--;

             current =iv_ruleSimple; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimple549); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimple"


    // $ANTLR start "ruleSimple"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:302:1: ruleSimple returns [EObject current=null] : ( () otherlv_1= 'SIMPLE' ) ;
    public final EObject ruleSimple() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:305:28: ( ( () otherlv_1= 'SIMPLE' ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:306:1: ( () otherlv_1= 'SIMPLE' )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:306:1: ( () otherlv_1= 'SIMPLE' )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:306:2: () otherlv_1= 'SIMPLE'
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:306:2: ()
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:307:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getSimpleAccess().getSimpleAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleSimple595); 

                	newLeafNode(otherlv_1, grammarAccess.getSimpleAccess().getSIMPLEKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimple"


    // $ANTLR start "entryRuleSemi"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:324:1: entryRuleSemi returns [EObject current=null] : iv_ruleSemi= ruleSemi EOF ;
    public final EObject entryRuleSemi() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSemi = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:325:2: (iv_ruleSemi= ruleSemi EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:326:2: iv_ruleSemi= ruleSemi EOF
            {
             newCompositeNode(grammarAccess.getSemiRule()); 
            pushFollow(FOLLOW_ruleSemi_in_entryRuleSemi631);
            iv_ruleSemi=ruleSemi();

            state._fsp--;

             current =iv_ruleSemi; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSemi641); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSemi"


    // $ANTLR start "ruleSemi"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:333:1: ruleSemi returns [EObject current=null] : ( () otherlv_1= 'SEMI' ) ;
    public final EObject ruleSemi() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:336:28: ( ( () otherlv_1= 'SEMI' ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:337:1: ( () otherlv_1= 'SEMI' )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:337:1: ( () otherlv_1= 'SEMI' )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:337:2: () otherlv_1= 'SEMI'
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:337:2: ()
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:338:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getSemiAccess().getSemiAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleSemi687); 

                	newLeafNode(otherlv_1, grammarAccess.getSemiAccess().getSEMIKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSemi"


    // $ANTLR start "entryRuleExclusivo"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:355:1: entryRuleExclusivo returns [EObject current=null] : iv_ruleExclusivo= ruleExclusivo EOF ;
    public final EObject entryRuleExclusivo() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExclusivo = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:356:2: (iv_ruleExclusivo= ruleExclusivo EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:357:2: iv_ruleExclusivo= ruleExclusivo EOF
            {
             newCompositeNode(grammarAccess.getExclusivoRule()); 
            pushFollow(FOLLOW_ruleExclusivo_in_entryRuleExclusivo723);
            iv_ruleExclusivo=ruleExclusivo();

            state._fsp--;

             current =iv_ruleExclusivo; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExclusivo733); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExclusivo"


    // $ANTLR start "ruleExclusivo"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:364:1: ruleExclusivo returns [EObject current=null] : ( () otherlv_1= 'EXCLUSIVO' ) ;
    public final EObject ruleExclusivo() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:367:28: ( ( () otherlv_1= 'EXCLUSIVO' ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:368:1: ( () otherlv_1= 'EXCLUSIVO' )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:368:1: ( () otherlv_1= 'EXCLUSIVO' )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:368:2: () otherlv_1= 'EXCLUSIVO'
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:368:2: ()
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:369:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getExclusivoAccess().getExclusivoAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,15,FOLLOW_15_in_ruleExclusivo779); 

                	newLeafNode(otherlv_1, grammarAccess.getExclusivoAccess().getEXCLUSIVOKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExclusivo"


    // $ANTLR start "entryRuleMateria"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:386:1: entryRuleMateria returns [EObject current=null] : iv_ruleMateria= ruleMateria EOF ;
    public final EObject entryRuleMateria() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMateria = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:387:2: (iv_ruleMateria= ruleMateria EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:388:2: iv_ruleMateria= ruleMateria EOF
            {
             newCompositeNode(grammarAccess.getMateriaRule()); 
            pushFollow(FOLLOW_ruleMateria_in_entryRuleMateria815);
            iv_ruleMateria=ruleMateria();

            state._fsp--;

             current =iv_ruleMateria; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMateria825); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMateria"


    // $ANTLR start "ruleMateria"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:395:1: ruleMateria returns [EObject current=null] : (otherlv_0= 'Materia:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dias:' ( (lv_diasEnLaSemana_3_0= RULE_INT ) ) otherlv_4= 'cargaHoraria:' ( (lv_cargaHoraria_5_0= RULE_INT ) ) (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )? ) ;
    public final EObject ruleMateria() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_diasEnLaSemana_3_0=null;
        Token otherlv_4=null;
        Token lv_cargaHoraria_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:398:28: ( (otherlv_0= 'Materia:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dias:' ( (lv_diasEnLaSemana_3_0= RULE_INT ) ) otherlv_4= 'cargaHoraria:' ( (lv_cargaHoraria_5_0= RULE_INT ) ) (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )? ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:399:1: (otherlv_0= 'Materia:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dias:' ( (lv_diasEnLaSemana_3_0= RULE_INT ) ) otherlv_4= 'cargaHoraria:' ( (lv_cargaHoraria_5_0= RULE_INT ) ) (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )? )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:399:1: (otherlv_0= 'Materia:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dias:' ( (lv_diasEnLaSemana_3_0= RULE_INT ) ) otherlv_4= 'cargaHoraria:' ( (lv_cargaHoraria_5_0= RULE_INT ) ) (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )? )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:399:3: otherlv_0= 'Materia:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'dias:' ( (lv_diasEnLaSemana_3_0= RULE_INT ) ) otherlv_4= 'cargaHoraria:' ( (lv_cargaHoraria_5_0= RULE_INT ) ) (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )?
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleMateria862); 

                	newLeafNode(otherlv_0, grammarAccess.getMateriaAccess().getMateriaKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:403:1: ( (lv_name_1_0= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:404:1: (lv_name_1_0= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:404:1: (lv_name_1_0= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:405:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMateria879); 

            			newLeafNode(lv_name_1_0, grammarAccess.getMateriaAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleMateria896); 

                	newLeafNode(otherlv_2, grammarAccess.getMateriaAccess().getDiasKeyword_2());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:425:1: ( (lv_diasEnLaSemana_3_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:426:1: (lv_diasEnLaSemana_3_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:426:1: (lv_diasEnLaSemana_3_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:427:3: lv_diasEnLaSemana_3_0= RULE_INT
            {
            lv_diasEnLaSemana_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMateria913); 

            			newLeafNode(lv_diasEnLaSemana_3_0, grammarAccess.getMateriaAccess().getDiasEnLaSemanaINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"diasEnLaSemana",
                    		lv_diasEnLaSemana_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleMateria930); 

                	newLeafNode(otherlv_4, grammarAccess.getMateriaAccess().getCargaHorariaKeyword_4());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:447:1: ( (lv_cargaHoraria_5_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:448:1: (lv_cargaHoraria_5_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:448:1: (lv_cargaHoraria_5_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:449:3: lv_cargaHoraria_5_0= RULE_INT
            {
            lv_cargaHoraria_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMateria947); 

            			newLeafNode(lv_cargaHoraria_5_0, grammarAccess.getMateriaAccess().getCargaHorariaINTTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"cargaHoraria",
                    		lv_cargaHoraria_5_0, 
                    		"INT");
            	    

            }


            }

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:465:2: (otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==19) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:465:4: otherlv_6= 'requiere:' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )*
                    {
                    otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleMateria965); 

                        	newLeafNode(otherlv_6, grammarAccess.getMateriaAccess().getRequiereKeyword_6_0());
                        
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:469:1: ( (otherlv_7= RULE_ID ) )
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:470:1: (otherlv_7= RULE_ID )
                    {
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:470:1: (otherlv_7= RULE_ID )
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:471:3: otherlv_7= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getMateriaRule());
                    	        }
                            
                    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMateria985); 

                    		newLeafNode(otherlv_7, grammarAccess.getMateriaAccess().getRequerimientosRequerimientoCrossReference_6_1_0()); 
                    	

                    }


                    }

                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:482:2: (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )*
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( (LA6_0==20) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:482:4: otherlv_8= ',' ( (otherlv_9= RULE_ID ) )
                    	    {
                    	    otherlv_8=(Token)match(input,20,FOLLOW_20_in_ruleMateria998); 

                    	        	newLeafNode(otherlv_8, grammarAccess.getMateriaAccess().getCommaKeyword_6_2_0());
                    	        
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:486:1: ( (otherlv_9= RULE_ID ) )
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:487:1: (otherlv_9= RULE_ID )
                    	    {
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:487:1: (otherlv_9= RULE_ID )
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:488:3: otherlv_9= RULE_ID
                    	    {

                    	    			if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getMateriaRule());
                    	    	        }
                    	            
                    	    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMateria1018); 

                    	    		newLeafNode(otherlv_9, grammarAccess.getMateriaAccess().getRequerimientosRequerimientoCrossReference_6_2_1_0()); 
                    	    	

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop6;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMateria"


    // $ANTLR start "entryRuleAula"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:507:1: entryRuleAula returns [EObject current=null] : iv_ruleAula= ruleAula EOF ;
    public final EObject entryRuleAula() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAula = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:508:2: (iv_ruleAula= ruleAula EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:509:2: iv_ruleAula= ruleAula EOF
            {
             newCompositeNode(grammarAccess.getAulaRule()); 
            pushFollow(FOLLOW_ruleAula_in_entryRuleAula1058);
            iv_ruleAula=ruleAula();

            state._fsp--;

             current =iv_ruleAula; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAula1068); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAula"


    // $ANTLR start "ruleAula"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:516:1: ruleAula returns [EObject current=null] : (otherlv_0= 'Aula:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'capacidad: ' ( (lv_capacidadAula_3_0= RULE_INT ) ) otherlv_4= ' alumnos ' (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )? ) ;
    public final EObject ruleAula() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_capacidadAula_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:519:28: ( (otherlv_0= 'Aula:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'capacidad: ' ( (lv_capacidadAula_3_0= RULE_INT ) ) otherlv_4= ' alumnos ' (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )? ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:520:1: (otherlv_0= 'Aula:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'capacidad: ' ( (lv_capacidadAula_3_0= RULE_INT ) ) otherlv_4= ' alumnos ' (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )? )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:520:1: (otherlv_0= 'Aula:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'capacidad: ' ( (lv_capacidadAula_3_0= RULE_INT ) ) otherlv_4= ' alumnos ' (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )? )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:520:3: otherlv_0= 'Aula:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'capacidad: ' ( (lv_capacidadAula_3_0= RULE_INT ) ) otherlv_4= ' alumnos ' (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleAula1105); 

                	newLeafNode(otherlv_0, grammarAccess.getAulaAccess().getAulaKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:524:1: ( (lv_name_1_0= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:525:1: (lv_name_1_0= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:525:1: (lv_name_1_0= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:526:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAula1122); 

            			newLeafNode(lv_name_1_0, grammarAccess.getAulaAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAulaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleAula1139); 

                	newLeafNode(otherlv_2, grammarAccess.getAulaAccess().getCapacidadKeyword_2());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:546:1: ( (lv_capacidadAula_3_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:547:1: (lv_capacidadAula_3_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:547:1: (lv_capacidadAula_3_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:548:3: lv_capacidadAula_3_0= RULE_INT
            {
            lv_capacidadAula_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleAula1156); 

            			newLeafNode(lv_capacidadAula_3_0, grammarAccess.getAulaAccess().getCapacidadAulaINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAulaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"capacidadAula",
                    		lv_capacidadAula_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleAula1173); 

                	newLeafNode(otherlv_4, grammarAccess.getAulaAccess().getAlumnosKeyword_4());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:568:1: (otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )* )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==24) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:568:3: otherlv_5= 'tiene:' ( (otherlv_6= RULE_ID ) ) (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )*
                    {
                    otherlv_5=(Token)match(input,24,FOLLOW_24_in_ruleAula1186); 

                        	newLeafNode(otherlv_5, grammarAccess.getAulaAccess().getTieneKeyword_5_0());
                        
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:572:1: ( (otherlv_6= RULE_ID ) )
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:573:1: (otherlv_6= RULE_ID )
                    {
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:573:1: (otherlv_6= RULE_ID )
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:574:3: otherlv_6= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAulaRule());
                    	        }
                            
                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAula1206); 

                    		newLeafNode(otherlv_6, grammarAccess.getAulaAccess().getRequerimientosRequerimientoCrossReference_5_1_0()); 
                    	

                    }


                    }

                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:585:2: (otherlv_7= ',' ( (otherlv_8= RULE_ID ) ) )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==20) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:585:4: otherlv_7= ',' ( (otherlv_8= RULE_ID ) )
                    	    {
                    	    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleAula1219); 

                    	        	newLeafNode(otherlv_7, grammarAccess.getAulaAccess().getCommaKeyword_5_2_0());
                    	        
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:589:1: ( (otherlv_8= RULE_ID ) )
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:590:1: (otherlv_8= RULE_ID )
                    	    {
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:590:1: (otherlv_8= RULE_ID )
                    	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:591:3: otherlv_8= RULE_ID
                    	    {

                    	    			if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getAulaRule());
                    	    	        }
                    	            
                    	    otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAula1239); 

                    	    		newLeafNode(otherlv_8, grammarAccess.getAulaAccess().getRequerimientosRequerimientoCrossReference_5_2_1_0()); 
                    	    	

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop8;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAula"


    // $ANTLR start "entryRuleRequerimiento"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:610:1: entryRuleRequerimiento returns [EObject current=null] : iv_ruleRequerimiento= ruleRequerimiento EOF ;
    public final EObject entryRuleRequerimiento() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRequerimiento = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:611:2: (iv_ruleRequerimiento= ruleRequerimiento EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:612:2: iv_ruleRequerimiento= ruleRequerimiento EOF
            {
             newCompositeNode(grammarAccess.getRequerimientoRule()); 
            pushFollow(FOLLOW_ruleRequerimiento_in_entryRuleRequerimiento1279);
            iv_ruleRequerimiento=ruleRequerimiento();

            state._fsp--;

             current =iv_ruleRequerimiento; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRequerimiento1289); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRequerimiento"


    // $ANTLR start "ruleRequerimiento"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:619:1: ruleRequerimiento returns [EObject current=null] : (otherlv_0= 'Requerimiento:' ( (lv_name_1_0= RULE_ID ) ) ) ;
    public final EObject ruleRequerimiento() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:622:28: ( (otherlv_0= 'Requerimiento:' ( (lv_name_1_0= RULE_ID ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:623:1: (otherlv_0= 'Requerimiento:' ( (lv_name_1_0= RULE_ID ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:623:1: (otherlv_0= 'Requerimiento:' ( (lv_name_1_0= RULE_ID ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:623:3: otherlv_0= 'Requerimiento:' ( (lv_name_1_0= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleRequerimiento1326); 

                	newLeafNode(otherlv_0, grammarAccess.getRequerimientoAccess().getRequerimientoKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:627:1: ( (lv_name_1_0= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:628:1: (lv_name_1_0= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:628:1: (lv_name_1_0= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:629:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRequerimiento1343); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRequerimientoAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRequerimientoRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRequerimiento"


    // $ANTLR start "entryRuleHorario"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:653:1: entryRuleHorario returns [EObject current=null] : iv_ruleHorario= ruleHorario EOF ;
    public final EObject entryRuleHorario() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHorario = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:654:2: (iv_ruleHorario= ruleHorario EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:655:2: iv_ruleHorario= ruleHorario EOF
            {
             newCompositeNode(grammarAccess.getHorarioRule()); 
            pushFollow(FOLLOW_ruleHorario_in_entryRuleHorario1384);
            iv_ruleHorario=ruleHorario();

            state._fsp--;

             current =iv_ruleHorario; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHorario1394); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHorario"


    // $ANTLR start "ruleHorario"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:662:1: ruleHorario returns [EObject current=null] : ( ( (lv_horaInicio_0_0= RULE_INT ) ) otherlv_1= ' a ' ( (lv_horaFin_2_0= RULE_INT ) ) ( (otherlv_3= RULE_ID ) ) otherlv_4= ' en ' ( (otherlv_5= RULE_ID ) ) ) ;
    public final EObject ruleHorario() throws RecognitionException {
        EObject current = null;

        Token lv_horaInicio_0_0=null;
        Token otherlv_1=null;
        Token lv_horaFin_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:665:28: ( ( ( (lv_horaInicio_0_0= RULE_INT ) ) otherlv_1= ' a ' ( (lv_horaFin_2_0= RULE_INT ) ) ( (otherlv_3= RULE_ID ) ) otherlv_4= ' en ' ( (otherlv_5= RULE_ID ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:666:1: ( ( (lv_horaInicio_0_0= RULE_INT ) ) otherlv_1= ' a ' ( (lv_horaFin_2_0= RULE_INT ) ) ( (otherlv_3= RULE_ID ) ) otherlv_4= ' en ' ( (otherlv_5= RULE_ID ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:666:1: ( ( (lv_horaInicio_0_0= RULE_INT ) ) otherlv_1= ' a ' ( (lv_horaFin_2_0= RULE_INT ) ) ( (otherlv_3= RULE_ID ) ) otherlv_4= ' en ' ( (otherlv_5= RULE_ID ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:666:2: ( (lv_horaInicio_0_0= RULE_INT ) ) otherlv_1= ' a ' ( (lv_horaFin_2_0= RULE_INT ) ) ( (otherlv_3= RULE_ID ) ) otherlv_4= ' en ' ( (otherlv_5= RULE_ID ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:666:2: ( (lv_horaInicio_0_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:667:1: (lv_horaInicio_0_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:667:1: (lv_horaInicio_0_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:668:3: lv_horaInicio_0_0= RULE_INT
            {
            lv_horaInicio_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleHorario1436); 

            			newLeafNode(lv_horaInicio_0_0, grammarAccess.getHorarioAccess().getHoraInicioINTTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHorarioRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"horaInicio",
                    		lv_horaInicio_0_0, 
                    		"INT");
            	    

            }


            }

            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleHorario1453); 

                	newLeafNode(otherlv_1, grammarAccess.getHorarioAccess().getAKeyword_1());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:688:1: ( (lv_horaFin_2_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:689:1: (lv_horaFin_2_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:689:1: (lv_horaFin_2_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:690:3: lv_horaFin_2_0= RULE_INT
            {
            lv_horaFin_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleHorario1470); 

            			newLeafNode(lv_horaFin_2_0, grammarAccess.getHorarioAccess().getHoraFinINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHorarioRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"horaFin",
                    		lv_horaFin_2_0, 
                    		"INT");
            	    

            }


            }

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:706:2: ( (otherlv_3= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:707:1: (otherlv_3= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:707:1: (otherlv_3= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:708:3: otherlv_3= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getHorarioRule());
            	        }
                    
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHorario1495); 

            		newLeafNode(otherlv_3, grammarAccess.getHorarioAccess().getMateriaMateriaCrossReference_3_0()); 
            	

            }


            }

            otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleHorario1507); 

                	newLeafNode(otherlv_4, grammarAccess.getHorarioAccess().getEnKeyword_4());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:723:1: ( (otherlv_5= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:724:1: (otherlv_5= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:724:1: (otherlv_5= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:725:3: otherlv_5= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getHorarioRule());
            	        }
                    
            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHorario1527); 

            		newLeafNode(otherlv_5, grammarAccess.getHorarioAccess().getAulaAulaCrossReference_5_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHorario"


    // $ANTLR start "entryRuleHorarioXDia"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:744:1: entryRuleHorarioXDia returns [EObject current=null] : iv_ruleHorarioXDia= ruleHorarioXDia EOF ;
    public final EObject entryRuleHorarioXDia() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHorarioXDia = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:745:2: (iv_ruleHorarioXDia= ruleHorarioXDia EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:746:2: iv_ruleHorarioXDia= ruleHorarioXDia EOF
            {
             newCompositeNode(grammarAccess.getHorarioXDiaRule()); 
            pushFollow(FOLLOW_ruleHorarioXDia_in_entryRuleHorarioXDia1563);
            iv_ruleHorarioXDia=ruleHorarioXDia();

            state._fsp--;

             current =iv_ruleHorarioXDia; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHorarioXDia1573); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHorarioXDia"


    // $ANTLR start "ruleHorarioXDia"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:753:1: ruleHorarioXDia returns [EObject current=null] : ( ( (lv_dia_0_0= ruleDia ) ) ( (lv_horarios_1_0= ruleHorario ) )* ) ;
    public final EObject ruleHorarioXDia() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_dia_0_0 = null;

        EObject lv_horarios_1_0 = null;


         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:756:28: ( ( ( (lv_dia_0_0= ruleDia ) ) ( (lv_horarios_1_0= ruleHorario ) )* ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:757:1: ( ( (lv_dia_0_0= ruleDia ) ) ( (lv_horarios_1_0= ruleHorario ) )* )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:757:1: ( ( (lv_dia_0_0= ruleDia ) ) ( (lv_horarios_1_0= ruleHorario ) )* )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:757:2: ( (lv_dia_0_0= ruleDia ) ) ( (lv_horarios_1_0= ruleHorario ) )*
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:757:2: ( (lv_dia_0_0= ruleDia ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:758:1: (lv_dia_0_0= ruleDia )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:758:1: (lv_dia_0_0= ruleDia )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:759:3: lv_dia_0_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getHorarioXDiaAccess().getDiaDiaParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_ruleHorarioXDia1619);
            lv_dia_0_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getHorarioXDiaRule());
            	        }
                   		set(
                   			current, 
                   			"dia",
                    		lv_dia_0_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:775:2: ( (lv_horarios_1_0= ruleHorario ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==RULE_INT) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:776:1: (lv_horarios_1_0= ruleHorario )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:776:1: (lv_horarios_1_0= ruleHorario )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:777:3: lv_horarios_1_0= ruleHorario
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getHorarioXDiaAccess().getHorariosHorarioParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleHorario_in_ruleHorarioXDia1640);
            	    lv_horarios_1_0=ruleHorario();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getHorarioXDiaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"horarios",
            	            		lv_horarios_1_0, 
            	            		"Horario");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHorarioXDia"


    // $ANTLR start "entryRuleDia"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:801:1: entryRuleDia returns [String current=null] : iv_ruleDia= ruleDia EOF ;
    public final String entryRuleDia() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDia = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:802:2: (iv_ruleDia= ruleDia EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:803:2: iv_ruleDia= ruleDia EOF
            {
             newCompositeNode(grammarAccess.getDiaRule()); 
            pushFollow(FOLLOW_ruleDia_in_entryRuleDia1678);
            iv_ruleDia=ruleDia();

            state._fsp--;

             current =iv_ruleDia.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDia1689); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDia"


    // $ANTLR start "ruleDia"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:810:1: ruleDia returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'LUNES' | kw= 'MARTES' | kw= 'MIERCOLES' | kw= 'JUEVES' | kw= 'VIERNES' | kw= 'SABADO' ) ;
    public final AntlrDatatypeRuleToken ruleDia() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:813:28: ( (kw= 'LUNES' | kw= 'MARTES' | kw= 'MIERCOLES' | kw= 'JUEVES' | kw= 'VIERNES' | kw= 'SABADO' ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:814:1: (kw= 'LUNES' | kw= 'MARTES' | kw= 'MIERCOLES' | kw= 'JUEVES' | kw= 'VIERNES' | kw= 'SABADO' )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:814:1: (kw= 'LUNES' | kw= 'MARTES' | kw= 'MIERCOLES' | kw= 'JUEVES' | kw= 'VIERNES' | kw= 'SABADO' )
            int alt11=6;
            switch ( input.LA(1) ) {
            case 28:
                {
                alt11=1;
                }
                break;
            case 29:
                {
                alt11=2;
                }
                break;
            case 30:
                {
                alt11=3;
                }
                break;
            case 31:
                {
                alt11=4;
                }
                break;
            case 32:
                {
                alt11=5;
                }
                break;
            case 33:
                {
                alt11=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:815:2: kw= 'LUNES'
                    {
                    kw=(Token)match(input,28,FOLLOW_28_in_ruleDia1727); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getLUNESKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:822:2: kw= 'MARTES'
                    {
                    kw=(Token)match(input,29,FOLLOW_29_in_ruleDia1746); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getMARTESKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:829:2: kw= 'MIERCOLES'
                    {
                    kw=(Token)match(input,30,FOLLOW_30_in_ruleDia1765); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getMIERCOLESKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:836:2: kw= 'JUEVES'
                    {
                    kw=(Token)match(input,31,FOLLOW_31_in_ruleDia1784); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getJUEVESKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:843:2: kw= 'VIERNES'
                    {
                    kw=(Token)match(input,32,FOLLOW_32_in_ruleDia1803); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getVIERNESKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:850:2: kw= 'SABADO'
                    {
                    kw=(Token)match(input,33,FOLLOW_33_in_ruleDia1822); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDiaAccess().getSABADOKeyword_5()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDia"


    // $ANTLR start "entryRuleAsignacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:863:1: entryRuleAsignacion returns [EObject current=null] : iv_ruleAsignacion= ruleAsignacion EOF ;
    public final EObject entryRuleAsignacion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAsignacion = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:864:2: (iv_ruleAsignacion= ruleAsignacion EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:865:2: iv_ruleAsignacion= ruleAsignacion EOF
            {
             newCompositeNode(grammarAccess.getAsignacionRule()); 
            pushFollow(FOLLOW_ruleAsignacion_in_entryRuleAsignacion1862);
            iv_ruleAsignacion=ruleAsignacion();

            state._fsp--;

             current =iv_ruleAsignacion; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAsignacion1872); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAsignacion"


    // $ANTLR start "ruleAsignacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:872:1: ruleAsignacion returns [EObject current=null] : (otherlv_0= 'materia:' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'dictadaPor: ' ( (otherlv_3= RULE_ID ) ) ) ;
    public final EObject ruleAsignacion() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:875:28: ( (otherlv_0= 'materia:' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'dictadaPor: ' ( (otherlv_3= RULE_ID ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:876:1: (otherlv_0= 'materia:' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'dictadaPor: ' ( (otherlv_3= RULE_ID ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:876:1: (otherlv_0= 'materia:' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'dictadaPor: ' ( (otherlv_3= RULE_ID ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:876:3: otherlv_0= 'materia:' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'dictadaPor: ' ( (otherlv_3= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleAsignacion1909); 

                	newLeafNode(otherlv_0, grammarAccess.getAsignacionAccess().getMateriaKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:880:1: ( (otherlv_1= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:881:1: (otherlv_1= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:881:1: (otherlv_1= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:882:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAsignacionRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAsignacion1929); 

            		newLeafNode(otherlv_1, grammarAccess.getAsignacionAccess().getMateriaMateriaCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleAsignacion1941); 

                	newLeafNode(otherlv_2, grammarAccess.getAsignacionAccess().getDictadaPorKeyword_2());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:897:1: ( (otherlv_3= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:898:1: (otherlv_3= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:898:1: (otherlv_3= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:899:3: otherlv_3= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAsignacionRule());
            	        }
                    
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAsignacion1961); 

            		newLeafNode(otherlv_3, grammarAccess.getAsignacionAccess().getProfesorProfesorCrossReference_3_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAsignacion"


    // $ANTLR start "entryRuleADictar"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:918:1: entryRuleADictar returns [EObject current=null] : iv_ruleADictar= ruleADictar EOF ;
    public final EObject entryRuleADictar() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleADictar = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:919:2: (iv_ruleADictar= ruleADictar EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:920:2: iv_ruleADictar= ruleADictar EOF
            {
             newCompositeNode(grammarAccess.getADictarRule()); 
            pushFollow(FOLLOW_ruleADictar_in_entryRuleADictar1997);
            iv_ruleADictar=ruleADictar();

            state._fsp--;

             current =iv_ruleADictar; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleADictar2007); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleADictar"


    // $ANTLR start "ruleADictar"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:927:1: ruleADictar returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= 'inscriptos:' ( (lv_inscriptos_2_0= RULE_INT ) ) ) ;
    public final EObject ruleADictar() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_inscriptos_2_0=null;

         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:930:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= 'inscriptos:' ( (lv_inscriptos_2_0= RULE_INT ) ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:931:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= 'inscriptos:' ( (lv_inscriptos_2_0= RULE_INT ) ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:931:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= 'inscriptos:' ( (lv_inscriptos_2_0= RULE_INT ) ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:931:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= 'inscriptos:' ( (lv_inscriptos_2_0= RULE_INT ) )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:931:2: ( (otherlv_0= RULE_ID ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:932:1: (otherlv_0= RULE_ID )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:932:1: (otherlv_0= RULE_ID )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:933:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getADictarRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleADictar2052); 

            		newLeafNode(otherlv_0, grammarAccess.getADictarAccess().getMateriaMateriaCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleADictar2064); 

                	newLeafNode(otherlv_1, grammarAccess.getADictarAccess().getInscriptosKeyword_1());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:948:1: ( (lv_inscriptos_2_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:949:1: (lv_inscriptos_2_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:949:1: (lv_inscriptos_2_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:950:3: lv_inscriptos_2_0= RULE_INT
            {
            lv_inscriptos_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleADictar2081); 

            			newLeafNode(lv_inscriptos_2_0, grammarAccess.getADictarAccess().getInscriptosINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getADictarRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"inscriptos",
                    		lv_inscriptos_2_0, 
                    		"INT");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleADictar"


    // $ANTLR start "entryRulePlanificacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:974:1: entryRulePlanificacion returns [EObject current=null] : iv_rulePlanificacion= rulePlanificacion EOF ;
    public final EObject entryRulePlanificacion() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlanificacion = null;


        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:975:2: (iv_rulePlanificacion= rulePlanificacion EOF )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:976:2: iv_rulePlanificacion= rulePlanificacion EOF
            {
             newCompositeNode(grammarAccess.getPlanificacionRule()); 
            pushFollow(FOLLOW_rulePlanificacion_in_entryRulePlanificacion2122);
            iv_rulePlanificacion=rulePlanificacion();

            state._fsp--;

             current =iv_rulePlanificacion; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlanificacion2132); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlanificacion"


    // $ANTLR start "rulePlanificacion"
    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:983:1: rulePlanificacion returns [EObject current=null] : (otherlv_0= 'Planificacion a\\u00F1o: ' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= 'semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '{' otherlv_5= 'materiasADictar' otherlv_6= '{' ( (lv_materiasADictar_7_0= ruleADictar ) )* otherlv_8= '}' otherlv_9= 'horarios {' ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )* otherlv_11= '}' otherlv_12= 'asignaciones {' ( (lv_asignaciones_13_0= ruleAsignacion ) )* otherlv_14= '}' otherlv_15= '}' ) ;
    public final EObject rulePlanificacion() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_anio_1_0=null;
        Token otherlv_2=null;
        Token lv_semestre_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        EObject lv_materiasADictar_7_0 = null;

        EObject lv_horariosXDia_10_0 = null;

        EObject lv_asignaciones_13_0 = null;


         enterRule(); 
            
        try {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:986:28: ( (otherlv_0= 'Planificacion a\\u00F1o: ' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= 'semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '{' otherlv_5= 'materiasADictar' otherlv_6= '{' ( (lv_materiasADictar_7_0= ruleADictar ) )* otherlv_8= '}' otherlv_9= 'horarios {' ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )* otherlv_11= '}' otherlv_12= 'asignaciones {' ( (lv_asignaciones_13_0= ruleAsignacion ) )* otherlv_14= '}' otherlv_15= '}' ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:987:1: (otherlv_0= 'Planificacion a\\u00F1o: ' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= 'semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '{' otherlv_5= 'materiasADictar' otherlv_6= '{' ( (lv_materiasADictar_7_0= ruleADictar ) )* otherlv_8= '}' otherlv_9= 'horarios {' ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )* otherlv_11= '}' otherlv_12= 'asignaciones {' ( (lv_asignaciones_13_0= ruleAsignacion ) )* otherlv_14= '}' otherlv_15= '}' )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:987:1: (otherlv_0= 'Planificacion a\\u00F1o: ' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= 'semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '{' otherlv_5= 'materiasADictar' otherlv_6= '{' ( (lv_materiasADictar_7_0= ruleADictar ) )* otherlv_8= '}' otherlv_9= 'horarios {' ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )* otherlv_11= '}' otherlv_12= 'asignaciones {' ( (lv_asignaciones_13_0= ruleAsignacion ) )* otherlv_14= '}' otherlv_15= '}' )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:987:3: otherlv_0= 'Planificacion a\\u00F1o: ' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= 'semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '{' otherlv_5= 'materiasADictar' otherlv_6= '{' ( (lv_materiasADictar_7_0= ruleADictar ) )* otherlv_8= '}' otherlv_9= 'horarios {' ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )* otherlv_11= '}' otherlv_12= 'asignaciones {' ( (lv_asignaciones_13_0= ruleAsignacion ) )* otherlv_14= '}' otherlv_15= '}'
            {
            otherlv_0=(Token)match(input,37,FOLLOW_37_in_rulePlanificacion2169); 

                	newLeafNode(otherlv_0, grammarAccess.getPlanificacionAccess().getPlanificacionAOKeyword_0());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:991:1: ( (lv_anio_1_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:992:1: (lv_anio_1_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:992:1: (lv_anio_1_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:993:3: lv_anio_1_0= RULE_INT
            {
            lv_anio_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_rulePlanificacion2186); 

            			newLeafNode(lv_anio_1_0, grammarAccess.getPlanificacionAccess().getAnioINTTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlanificacionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"anio",
                    		lv_anio_1_0, 
                    		"INT");
            	    

            }


            }

            otherlv_2=(Token)match(input,38,FOLLOW_38_in_rulePlanificacion2203); 

                	newLeafNode(otherlv_2, grammarAccess.getPlanificacionAccess().getSemestreKeyword_2());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1013:1: ( (lv_semestre_3_0= RULE_INT ) )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1014:1: (lv_semestre_3_0= RULE_INT )
            {
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1014:1: (lv_semestre_3_0= RULE_INT )
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1015:3: lv_semestre_3_0= RULE_INT
            {
            lv_semestre_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_rulePlanificacion2220); 

            			newLeafNode(lv_semestre_3_0, grammarAccess.getPlanificacionAccess().getSemestreINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlanificacionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"semestre",
                    		lv_semestre_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,39,FOLLOW_39_in_rulePlanificacion2237); 

                	newLeafNode(otherlv_4, grammarAccess.getPlanificacionAccess().getLeftCurlyBracketKeyword_4());
                
            otherlv_5=(Token)match(input,40,FOLLOW_40_in_rulePlanificacion2249); 

                	newLeafNode(otherlv_5, grammarAccess.getPlanificacionAccess().getMateriasADictarKeyword_5());
                
            otherlv_6=(Token)match(input,39,FOLLOW_39_in_rulePlanificacion2261); 

                	newLeafNode(otherlv_6, grammarAccess.getPlanificacionAccess().getLeftCurlyBracketKeyword_6());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1043:1: ( (lv_materiasADictar_7_0= ruleADictar ) )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==RULE_ID) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1044:1: (lv_materiasADictar_7_0= ruleADictar )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1044:1: (lv_materiasADictar_7_0= ruleADictar )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1045:3: lv_materiasADictar_7_0= ruleADictar
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPlanificacionAccess().getMateriasADictarADictarParserRuleCall_7_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleADictar_in_rulePlanificacion2282);
            	    lv_materiasADictar_7_0=ruleADictar();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"materiasADictar",
            	            		lv_materiasADictar_7_0, 
            	            		"ADictar");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);

            otherlv_8=(Token)match(input,41,FOLLOW_41_in_rulePlanificacion2295); 

                	newLeafNode(otherlv_8, grammarAccess.getPlanificacionAccess().getRightCurlyBracketKeyword_8());
                
            otherlv_9=(Token)match(input,42,FOLLOW_42_in_rulePlanificacion2307); 

                	newLeafNode(otherlv_9, grammarAccess.getPlanificacionAccess().getHorariosKeyword_9());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1069:1: ( (lv_horariosXDia_10_0= ruleHorarioXDia ) )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( ((LA13_0>=28 && LA13_0<=33)) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1070:1: (lv_horariosXDia_10_0= ruleHorarioXDia )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1070:1: (lv_horariosXDia_10_0= ruleHorarioXDia )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1071:3: lv_horariosXDia_10_0= ruleHorarioXDia
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPlanificacionAccess().getHorariosXDiaHorarioXDiaParserRuleCall_10_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleHorarioXDia_in_rulePlanificacion2328);
            	    lv_horariosXDia_10_0=ruleHorarioXDia();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"horariosXDia",
            	            		lv_horariosXDia_10_0, 
            	            		"HorarioXDia");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);

            otherlv_11=(Token)match(input,41,FOLLOW_41_in_rulePlanificacion2341); 

                	newLeafNode(otherlv_11, grammarAccess.getPlanificacionAccess().getRightCurlyBracketKeyword_11());
                
            otherlv_12=(Token)match(input,43,FOLLOW_43_in_rulePlanificacion2353); 

                	newLeafNode(otherlv_12, grammarAccess.getPlanificacionAccess().getAsignacionesKeyword_12());
                
            // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1095:1: ( (lv_asignaciones_13_0= ruleAsignacion ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==34) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1096:1: (lv_asignaciones_13_0= ruleAsignacion )
            	    {
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1096:1: (lv_asignaciones_13_0= ruleAsignacion )
            	    // ../tp4.dsl.pdm/src-gen/tp4/dsl/parser/antlr/internal/InternalPdm.g:1097:3: lv_asignaciones_13_0= ruleAsignacion
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPlanificacionAccess().getAsignacionesAsignacionParserRuleCall_13_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAsignacion_in_rulePlanificacion2374);
            	    lv_asignaciones_13_0=ruleAsignacion();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"asignaciones",
            	            		lv_asignaciones_13_0, 
            	            		"Asignacion");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            otherlv_14=(Token)match(input,41,FOLLOW_41_in_rulePlanificacion2387); 

                	newLeafNode(otherlv_14, grammarAccess.getPlanificacionAccess().getRightCurlyBracketKeyword_14());
                
            otherlv_15=(Token)match(input,41,FOLLOW_41_in_rulePlanificacion2399); 

                	newLeafNode(otherlv_15, grammarAccess.getPlanificacionAccess().getRightCurlyBracketKeyword_15());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlanificacion"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRequerimiento_in_ruleModel131 = new BitSet(new long[]{0x0000002002210800L});
    public static final BitSet FOLLOW_ruleProfesor_in_ruleModel153 = new BitSet(new long[]{0x0000002000210800L});
    public static final BitSet FOLLOW_ruleMateria_in_ruleModel175 = new BitSet(new long[]{0x0000002000210800L});
    public static final BitSet FOLLOW_ruleAula_in_ruleModel197 = new BitSet(new long[]{0x0000002000210800L});
    public static final BitSet FOLLOW_rulePlanificacion_in_ruleModel219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProfesor_in_entryRuleProfesor255 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProfesor265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleProfesor302 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleProfesor319 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleProfesor336 = new BitSet(new long[]{0x000000000000E000L});
    public static final BitSet FOLLOW_ruleDedicacion_in_ruleProfesor357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDedicacion_in_entryRuleDedicacion393 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDedicacion403 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimple_in_ruleDedicacion450 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSemi_in_ruleDedicacion477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExclusivo_in_ruleDedicacion504 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimple_in_entryRuleSimple539 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimple549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleSimple595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSemi_in_entryRuleSemi631 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSemi641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleSemi687 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExclusivo_in_entryRuleExclusivo723 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExclusivo733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleExclusivo779 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMateria_in_entryRuleMateria815 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMateria825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleMateria862 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleMateria879 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleMateria896 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMateria913 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleMateria930 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMateria947 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_19_in_ruleMateria965 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleMateria985 = new BitSet(new long[]{0x0000000000100002L});
    public static final BitSet FOLLOW_20_in_ruleMateria998 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleMateria1018 = new BitSet(new long[]{0x0000000000100002L});
    public static final BitSet FOLLOW_ruleAula_in_entryRuleAula1058 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAula1068 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleAula1105 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAula1122 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleAula1139 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleAula1156 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleAula1173 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_ruleAula1186 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAula1206 = new BitSet(new long[]{0x0000000000100002L});
    public static final BitSet FOLLOW_20_in_ruleAula1219 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAula1239 = new BitSet(new long[]{0x0000000000100002L});
    public static final BitSet FOLLOW_ruleRequerimiento_in_entryRuleRequerimiento1279 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRequerimiento1289 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleRequerimiento1326 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRequerimiento1343 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHorario_in_entryRuleHorario1384 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHorario1394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleHorario1436 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleHorario1453 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleHorario1470 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleHorario1495 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleHorario1507 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleHorario1527 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHorarioXDia_in_entryRuleHorarioXDia1563 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHorarioXDia1573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDia_in_ruleHorarioXDia1619 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleHorario_in_ruleHorarioXDia1640 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleDia_in_entryRuleDia1678 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDia1689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleDia1727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleDia1746 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleDia1765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleDia1784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleDia1803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleDia1822 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAsignacion_in_entryRuleAsignacion1862 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAsignacion1872 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleAsignacion1909 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAsignacion1929 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleAsignacion1941 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAsignacion1961 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleADictar_in_entryRuleADictar1997 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleADictar2007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleADictar2052 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleADictar2064 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleADictar2081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlanificacion_in_entryRulePlanificacion2122 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlanificacion2132 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_rulePlanificacion2169 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_rulePlanificacion2186 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_rulePlanificacion2203 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_rulePlanificacion2220 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_rulePlanificacion2237 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_rulePlanificacion2249 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_rulePlanificacion2261 = new BitSet(new long[]{0x0000020000000010L});
    public static final BitSet FOLLOW_ruleADictar_in_rulePlanificacion2282 = new BitSet(new long[]{0x0000020000000010L});
    public static final BitSet FOLLOW_41_in_rulePlanificacion2295 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_42_in_rulePlanificacion2307 = new BitSet(new long[]{0x00000203F0000000L});
    public static final BitSet FOLLOW_ruleHorarioXDia_in_rulePlanificacion2328 = new BitSet(new long[]{0x00000203F0000000L});
    public static final BitSet FOLLOW_41_in_rulePlanificacion2341 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_rulePlanificacion2353 = new BitSet(new long[]{0x0000020400000000L});
    public static final BitSet FOLLOW_ruleAsignacion_in_rulePlanificacion2374 = new BitSet(new long[]{0x0000020400000000L});
    public static final BitSet FOLLOW_41_in_rulePlanificacion2387 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_rulePlanificacion2399 = new BitSet(new long[]{0x0000000000000002L});

}